package com.ssy.lingxi.member.merchant.service.web;

import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.member.merchant.entity.MemberRelationDO;
import com.ssy.lingxi.member.merchant.model.vo.basic.response.AuthTreeMenuButtonCheckIdVO;
import com.ssy.lingxi.member.merchant.model.vo.basic.response.AuthTreeMenuVO;
import com.ssy.lingxi.member.merchant.model.vo.maintenance.response.PlatformMemberQuerySearchConditionVO;
import com.ssy.lingxi.member.merchant.model.vo.maintenance.response.PlatformPageQueryMemberVO;
import com.ssy.lingxi.member.merchant.model.vo.validate.request.*;
import com.ssy.lingxi.member.merchant.model.vo.validate.response.PlatformMemberValidateDetailVO;
import com.ssy.lingxi.member.merchant.model.vo.validate.response.PlatformMemberValidateQueryButtonVO;
import org.springframework.http.HttpHeaders;

import java.util.List;

/**
 * 业务平台管理后台 - 会员审核接口类
 * @author 万宁
 * @version 2.0.0
 * @date 2020-06-28
 */
public interface IPlatformMemberValidateService {

    /**
     * 点击左侧权限菜单，获得右侧按钮列表，以及需要勾选的按钮id列表
     * @param headers Http头部信息
     * @param buttonVO 接口参数
     * @return 操作结果
     */
    Wrapper<PlatformMemberValidateQueryButtonVO> getTreeAuthButtons(HttpHeaders headers, MemberValidateButtonVO buttonVO);

    /**
     * 获得左侧全量菜单
     * @param headers Http头部信息
     * @param validateVO 接口参数
     * @return 操作结果
     */
    Wrapper<List<AuthTreeMenuVO>> getTreeAuthMenu(HttpHeaders headers, MemberValidateVO validateVO);

    /**
     * 获得左侧菜单勾选的Id列表
     * @param headers Http头部信息
     * @param validateVO 接口参数
     * @return 操作结果
     */
    Wrapper<AuthTreeMenuButtonCheckIdVO> getValidateAuthTreeCheckIds(HttpHeaders headers, MemberValidateVO validateVO);

    /**
     * 修改审核会员的左侧菜单权限
     * @param headers Http头部信息
     * @param authVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> updateValidateAuth(HttpHeaders headers, MemberValidateUpdateAuthVO authVO);

    /**
     * 修改审核会员的右侧按钮权限
     * @param headers Http头部信息
     * @param buttonVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> updateValidateAuthButton(HttpHeaders headers, MemberValidateUpdateAuthButtonVO buttonVO);

    /**
     * 获取“待提交审核会员”页面中各个查询条件下拉选择框的内容
     * @param headers Http头部信息
     * @return 操作结果
     */
    Wrapper<PlatformMemberQuerySearchConditionVO> getToBeCommitPageCondition(HttpHeaders headers);

    /**
     * 分页查询“待提交审核会员”列表
     * @param headers Http头部信息
     * @param memberQueryVO 接口参数
     * @return 操作结果
     */
    Wrapper<PageData<PlatformPageQueryMemberVO>> pageToBeCommitMembers(HttpHeaders headers, PlatformMemberValidateQueryVO memberQueryVO);

    /**
     * 获取“提交审核会员”页面会员信息
     * @param headers Http头部信息
     * @param validateVO 接口参数
     * @return 操作结果
     */
    Wrapper<PlatformMemberValidateDetailVO> getToBeCommitMemberDetail(HttpHeaders headers, MemberValidateVO validateVO);

    /**
     * 提交审核会员
     * @param headers HttpHeaders信息
     * @param commitVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> commitMemberValidate(HttpHeaders headers, MemberValidateCommitVO commitVO);

    /**
     * 批量提交审核会员
     * @param headers HttpHeaders信息
     * @param validateVOList 接口参数
     * @return 操作结果
     */
    Wrapper<Void> batchCommitMemberValidate(HttpHeaders headers, List<MemberValidateVO> validateVOList);

    /**
     * 获取“待审核会员(一级)”页面中各个查询条件下拉选择框的内容
     * @param headers Http头部信息
     * @return 操作结果
     */
    Wrapper<PlatformMemberQuerySearchConditionVO> getToBeValidateStep1PageCondition(HttpHeaders headers);

    /**
     * 分页查询“待审核会员(一级)”列表
     * @param headers Http头部信息
     * @param memberQueryVO 接口参数
     * @return 操作结果
     */
    Wrapper<PageData<PlatformPageQueryMemberVO>> pageToBeValidateStep1Members(HttpHeaders headers, PlatformMemberValidateQueryVO memberQueryVO);

    /**
     * 获取“审核会员(一级)”页面会员信息
     * @param headers Http头部信息
     * @param validateVO 接口参数
     * @return 操作结果
     */
    Wrapper<PlatformMemberValidateDetailVO> getValidateStep1MemberDetail(HttpHeaders headers, MemberValidateVO validateVO);

    /**
     * 批量审核会员(一级)
     * @param headers HttpHeaders信息
     * @param validateVOList 接口参数
     * @return 操作结果
     */
    Wrapper<Void> batchValidateMemberStep1(HttpHeaders headers, List<MemberValidateVO> validateVOList);

    /**
     * 审核会员(一级)
     * @param headers HttpHeaders信息
     * @param commitVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> validateMemberStep1(HttpHeaders headers, MemberValidateCommitVO commitVO);

    /**
     * 获取“待审核会员(二级)”页面中各个查询条件下拉选择框的内容
     * @param headers Http头部信息
     * @return 操作结果
     */
    Wrapper<PlatformMemberQuerySearchConditionVO> getToBeValidateStep2PageCondition(HttpHeaders headers);

    /**
     * 分页查询“待审核会员(二级)”列表
     * @param headers Http头部信息
     * @param memberQueryVO 接口参数
     * @return 操作结果
     */
    Wrapper<PageData<PlatformPageQueryMemberVO>> pageToBeValidateStep2Members(HttpHeaders headers, PlatformMemberValidateQueryVO memberQueryVO);

    /**
     * 获取“审核会员(二级)”页面会员信息
     * @param headers Http头部信息
     * @param validateVO 接口参数
     * @return 操作结果
     */
    Wrapper<PlatformMemberValidateDetailVO> getValidateStep2MemberDetail(HttpHeaders headers, MemberValidateVO validateVO);

    /**
     * 审核会员(二级)
     * @param headers HttpHeaders信息
     * @param commitVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> validateMemberStep2(HttpHeaders headers, MemberValidateCommitVO commitVO);

    /**
     * 批量审核会员(二级)
     * @param headers HttpHeaders信息
     * @param validateVOList 接口参数
     * @return 操作结果
     */
    Wrapper<Void> batchValidateMemberStep2(HttpHeaders headers, List<MemberValidateVO> validateVOList);

    /**
     * 获取“待确认会员审核结果”页面中各个查询条件下拉选择框的内容
     * @param headers Http头部信息
     * @return 操作结果
     */
    Wrapper<PlatformMemberQuerySearchConditionVO> getToBeConfirmPageCondition(HttpHeaders headers);

    /**
     * 分页查询“待确认会员审核结果”列表
     * @param headers Http头部信息
     * @param memberQueryVO 接口参数
     * @return 操作结果
     */
    Wrapper<PageData<PlatformPageQueryMemberVO>> pageToBeConfirmMembers(HttpHeaders headers, PlatformMemberValidateQueryVO memberQueryVO);

    /**
     * 获取“确认会员审核结果”页面会员信息
     * @param headers Http头部信息
     * @param validateVO 接口参数
     * @return 操作结果
     */
    Wrapper<PlatformMemberValidateDetailVO> getConfirmValidateMemberDetail(HttpHeaders headers, MemberValidateVO validateVO);

    /**
     * 确认会员审核结果
     * @param headers HttpHeaders信息
     * @param commitVO 接口参数
     * @return 操作结果
     */
    Wrapper<Void> confirmMemberValidate(HttpHeaders headers, MemberValidateCommitVO commitVO);

    /**
     * 批量确认会员审核结果
     * @param headers HttpHeaders信息
     * @param validateVOList 接口参数
     * @return 操作结果
     */
    Wrapper<Void> batchConfirmMemberValidate(HttpHeaders headers, List<MemberValidateVO> validateVOList);

    /**
     * 根据平台会员审核的结果，更新会员能力关系的状态
     * @param platformRelation 平台会员关系
     * @return 操作结果
     */
    Wrapper<Void> updateMemberRelationValidateStatus(MemberRelationDO platformRelation);
}
